La funzione `header` in PHP è una funzione molto potente usata per inviare intestazioni HTTP (header) al client. Le intestazioni HTTP sono metadati che forniscono informazioni supplementari al browser o al client su come trattare la risposta del server. Le intestazioni sono inviate prima di qualsiasi contenuto effettivo, quindi è fondamentale che la funzione `header` venga chiamata prima di qualsiasi output HTML, spazi, caratteri o nuova linea che potrebbe generare output verso il client.
Per usare la funzione `header`, è sufficiente chiamarla con una stringa che rappresenta l’intestazione HTTP che si desidera inviare. Ecco un esempio base:
```
header(‘Content-Type: text/html; charset=UTF-8’);
?>
```
In questo caso, l’intestazione `Content-Type` informa il browser che il contenuto deve essere interpretato come HTML e che il set di caratteri da usare è UTF-8.
Una delle funzionalità più comuni per cui viene utilizzata la funzione `header` è il reindirizzamento. Ecco un esempio di come eseguire un reindirizzamento con la funzione `header`:
```
header(‘Location: http://www.example.com/’);
exit();
?>
```
In questo caso, il client sarà reindirizzato all’URL specificato. È buona pratica utilizzare `exit()` immediatamente dopo un reindirizzamento per assicurarsi che non vengano eseguite ulteriori elaborazioni sul server.
Le intestazioni HTTP possono anche essere utilizzate per controllare il caching del contenuto da parte del browser. Ecco un esempio:
```
header(‘Cache-Control: no-cache, no-store, must-revalidate’); // HTTP 1.1
header(‘Pragma: no-cache’); // HTTP 1.0
header(‘Expires: 0’); // Proxies
?>
```
Tipologie di Intestazioni
```
header(‘Content-Disposition: attachment; filename=“filename.jpg”’);
?>
```
Questa intestazione serve per forzare il browser a scaricare il file specificato come allegato, piuttosto che visualizzarlo direttamente.
```
header(‘Access-Control-Allow-Origin: *’);
?>
```
Utilizzata nelle risposte delle API, questa intestazione permette a risorse di essere richieste da qualunque origine.
```
header(‘X-Content-Type-Options: nosniff’);
?>
```
Questa intestazione viene usata per prevenire attacchi basati sul MIME type sniffing, dove il browser tenta di rilevare il tipo di contenuto servito dal server.
La funzione `header` può modificare anche i codici di stato HTTP. Ad esempio:
```
// Modo preferito per i nuovi codici HTTP
http_response_code(404);
?>
```
Oppure più genericamente:
```
header($_SERVER[“SERVER_PROTOCOL”] . ‘ 404 Not Found’);
?>
```
```
header(‘Content-Type: application/json’);
echo json_encode([“message” => “Hello, World!”]);
?>
```
- No output buffering: Prima di inviare intestazioni HTTP, assicurati che non ci sia output verso il browser.
- SSL/TLS: Alcune intestazioni, come `Strict-Transport-Security`, devono essere usate con connessioni sicure (HTTPS).
È importante consultare fonti ufficiali e affidabili come la [documentazione ufficiale PHP](https://www.php.net/manual/en/function.header.php) e riferimenti come [Mozilla Developer Network (MDN)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers) per una comprensione più approfondita.
La funzione `header` in PHP è uno strumento essenziale per gestire le intestazioni HTTP. Viene utilizzata per vari scopi, tra cui la gestione del tipo di contenuto, reindirizzamenti, controllo della cache e sicurezza. Capire come e quando usare questa funzione può migliorare notevolmente l’interazione tra il server e il client.
Fonti:
1. [PHP: header – Manual](https://www.php.net/manual/en/function.header.php)
2. [Mozilla Developer Network: HTTP Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers)